<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
    </body>
    <script>
        // es6引入了一种新的原始数组类型Symbol,表示独一无二的值,它是javascript语言的第七种数据类型,是一种类似于字符串的数据类型;
        // 1.Symbol的值是唯一的,用来解决命名冲突的问题
        // 2.Symbol值不能与其他数据进行运算
        // 3.Symbol定义的对象属性不能使用for..in循环遍历,但是可以使用Reflect.ownKeys来获取对象的所有键名

        // 创建Symbol
        let s = Symbol();
        console.log(s, typeof s);//Symbol() "symbol"

        let s2 = Symbol("哈哈");
        console.log(s2);//Symbol(哈哈)
        let s3 = Symbol("哈哈");
        console.log(s2 == s3);// false

        // Symbol.for  创建函数对象
        let s4 = Symbol.for("哈哈");
        console.log(s4, typeof s4);//Symbol(哈哈) "symbol"
        let s5 = Symbol.for("哈哈");
        console.log(s4 === s5); // true

        // 不能与其他数据进行运算

        // usonb   USONB

        // undefined
        // string   symbol
        // object
        // null   number
        // boolean

        //-----------------------------------------------------------------------------------
        // 向对象中添加方法  up down
        // symbol表示独一无二的值,给对象添加属性和方法
         
        let game = {
            name:"俄罗斯方块",
            up:function(){
                console.log("我是up");
            },
            down:function(){
                console.log("我是down");
            }
        }
        // 声明一个对象
        let methods = {
            up:Symbol(),
            down:Symbol()
        };
        game[methods.up] = function(){
            console.log("我可以改变形状");
        }
        game[methods.down] = function(){
            console.log("我可以快速下降");
        }
        console.log(game);//{name: "俄罗斯方块", up: ƒ, down: ƒ, Symbol(): ƒ, Symbol(): ƒ}
        

        // ----------------------------------------------------------------------------------------------------
        let youxi = {
            name :"狼人杀",
            [Symbol("say")]:function(){
                console.log("我可以说话");
            },
            [Symbol("zibao")]:function(){
                console.log("我可以自爆");
            }
        }
        console.log(youxi);
    </script>
</html>